/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package dao;

import java.util.ArrayList;
import java.util.List;
import libcontrol.model.Obra;
import libcontrol.model.Usuario;

/**
 *
 * @author marco
 */
public class DaoUsuario extends Dao<Usuario> {

    public DaoUsuario() {
        super(Usuario.class);
    }

    public List<Usuario> listByNome(String nome) {
        return criteria.andStringLike("nome", "%" + nome + "%").getResultList();
    }

    public Usuario findByCpf(String cpf) {
        List<Usuario> resultList = criteria.andEquals("cpf", cpf).getResultList();
        return resultList.isEmpty() ? null : resultList.get(0);
    }

    public Usuario findByLoginAndSenha(String login, String senha) {
        Usuario usuario = findByLogin(login);
        if (usuario == null) {
            return null;
        }
        return usuario.getSenha().equals(senha) ? usuario : null;
    }

    public Usuario findByLogin(String login) {
        List<Usuario> resultList = criteria.andEquals("login", login).getResultList();
        return resultList.isEmpty() ? null : resultList.get(0);
    }

    public List<Usuario> findAllDevedores() {
        ArrayList<Usuario> resultList = new ArrayList<>();
        for (Usuario usuario : criteria.getResultList()) {
            if (usuario.hasDebitosPendentes()) {
                resultList.add(usuario);
            }
        }
        return resultList;
    }

    public List<Usuario> findAllDevolucaoAtraso() {
        ArrayList<Usuario> resultList = new ArrayList<>();
        for (Usuario usuario : criteria.getResultList()) {
            if (usuario.hasDevolucoesAtrasadas()) {
                resultList.add(usuario);
            }
        }
        return resultList;

    }

    public List<Usuario> findAllEmprestimo() {
        return null;
    }
}
